#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QDebug>
#include<QMessageBox>
#include<QTcpSocket>
#include<QTcpServer>
#include<QHostAddress>
#include<QThread>
#include <QtCore/QCoreApplication>
#include<QHostInfo>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QTcpServer *server;
    QTcpSocket *socket;
    struct tcpinfo { // 这个数据结构是用来存储socket连接和这个socket对应的发送过来的数据的
        QTcpSocket* socket; //存放的是客户端的连接上的客户端的socket
        QByteArray arrData;//存放的是客户端socket附着的数据
        quint16 data_len=-1;
    };
    QList<tcpinfo> m_list; // 因为有很多客户端要和这个服务相连，因此建一个列表存放他们
    QList<QHostAddress> ip_list;//存放所有连接用户的ip
    int talkmode=-1;//判断沟通模式
    QString currentsingleIP;
    char buffertype;//判断包的类型
private slots:
    void newClientHandler();
    void clientInfo();
    void dealPack(int i);
    void dealRec(int i,QByteArray arr);
    void dealRecPrivate(int i,QByteArray arr,QString singleaddress);
    void dealdis();
};
#endif // WIDGET_H
